//
//  CZStatusComments.swift
//  GZWeibo666
//
//  Created by apple on 15/12/1.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit

/// MARK: 指定微博的评论列表模型
class CZStatusComments: NSObject {
    
    /// 用于显示正在加载数据cell
    var loading = false
    
    var status:CZStatus?
    // 评论创建时间
    var created_at: String?
    // 评论的ID
    var id: Int = 0
    // 	评论的内容
    var text: String?
    // 	评论的来源
    var source: String?
    // 评论作者的用户信息字段
    var user: CZUser?
    // 评论的MID
    var mid: String?
    // 字符串型的评论ID
    var idstr:String?
    // 评论来源评论，当本评论属于对另一评论的回复时返回此字段
    var reply_comment: NSObject?
    
    
//    source	false	string	采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
//    access_token	false	string	采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
//    id	true	int64	需要查询的微博ID。
//    since_id	false	int64	若指定此参数，则返回ID比since_id大的评论（即比since_id时间晚的评论），默认为0。
//    max_id	false	int64	若指定此参数，则返回ID小于或等于max_id的评论，默认为0。
//    count	false	int	单页返回的记录条数，默认为50。
//    page	false	int	返回结果的页码，默认为1。
//    filter_by_author	false	int	作者筛选类型，0：全部、1：我关注的人、2：陌生人，默认为0。
    
//    加载评论列表
   class func loadComments(statusId: Int,since_id:Int, max_id: Int, finished:(comments: [CZStatusComments]?, total_number: Int?, previous_cursor: Int?, next_cursor: Int?, error: NSError?) -> ()){
//        调用网络工具类
        CZNetworkTool.sharedInstance.loadComments(statusId, since_id: since_id, max_id: max_id) { (result, error) -> () in
//            如果没有获取到数据
            if error != nil {
                print("获取数据失败")
                finished(comments: nil, total_number: nil, previous_cursor: nil, next_cursor: nil, error: error)
                return
            }
            print("*********result:\(result)")
            
            // 总数量
            let total_number = result?["total_number"] as? Int
            
            // 上一页id
            let previous_cursor = result?["previous_cursor"] as? Int
            
            // 下一页id
            let next_cursor = result?["next_cursor"] as? Int
            
            
            // 字典转模型
            var comments = [CZStatusComments]()
            // 解析 comments 里面的评论模型
            if let array = result?["comments"] as? [[String: AnyObject]] {
                for dic in array {
                    let comment = CZStatusComments(dic: dic)
                    
                    comments.append(comment)
                }
                
                
                finished(comments: comments, total_number: total_number, previous_cursor: previous_cursor, next_cursor: next_cursor, error: nil)
                
            } else {
                
                finished(comments: nil, total_number: total_number, previous_cursor: previous_cursor, next_cursor: next_cursor, error: nil)
            }

        }
        
    }
    
    
    init(loading: Bool) {
        self.loading = loading
        super.init()
    }

    
//    字典转模型
    init(dic: [String: AnyObject]) {
        super.init()
        
        setValuesForKeysWithDictionary(dic)
    }
    
    
//    如果key是user
    override func setValue(value: AnyObject?, forKey key: String) {
        if key == "user" {
            if let dict = value as? [String: AnyObject] {
                user = CZUser(dict: dict)
            }
            return
        }
        
        super.setValue(value, forKey: key)
    }
    
    
//    找不到
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
    
    
    
//    打印详细信息
    override var description: String {
        let comments = ["id", "created_at", "user"]
        
        return "\n\t:评论模型: \(dictionaryWithValuesForKeys(comments))"
    }

    
    
}
